package com.dailywork.basepro.genericity;

import javafx.util.Pair;

import java.time.LocalDate;
import java.util.Objects;

public class Genericity {

    public static void main(String[] args) {
        LocalDate[] localDates = {
                LocalDate.of(1990, 3, 10),
                LocalDate.of(1993, 3, 10),
                LocalDate.of(1970, 10, 10),
                LocalDate.of(1960, 3, 20),
                LocalDate.of(1991, 8, 27)
        };
        Pair<LocalDate, LocalDate> mm = ArrayAlg.minmax(localDates);
        System.out.println(mm.getKey());
        System.out.println(mm.getValue());
    }
}

class ArrayAlg {
    public static <T extends Comparable> Pair<T, T> minmax(T[] data) {
        if (Objects.isNull(data) || data.length == 0) {
            return null;
        }
        T min = data[0];
        T max = data[0];
        for (T da : data) {
            if (min.compareTo(da) > 0) {
                min = da;
            }
            if (max.compareTo(da) < 0) {
                max = da;
            }
        }
        return new Pair<>(min, max);
    }
}
